class Student:
    """定义学生类，用于存储学生信息"""
    def __init__(self, student_id, name):
        self.student_id = student_id
        self.name = name

    def __str__(self):
        """定义对象的字符串表示"""
        return f"学号: {self.student_id}, 姓名: {self.name}"

class StudentManager:
    """学生管理类，负责学生信息的增删改查"""
    def __init__(self):
        self.students = []  # 用列表存储所有学生对象

    def add_student(self):
        """添加学生信息"""
        print("\n--- 添加学生信息 ---")
        student_id = input("请输入学生学号: ")
        # 检查学号是否已存在
        if any(s.student_id == student_id for s in self.students):
            print("错误：该学号已存在，请重新输入！")
            return

        name = input("请输入学生姓名: ")
        new_student = Student(student_id, name)
        self.students.append(new_student)
        print(f"学生 {name} (学号: {student_id}) 添加成功！")

    def delete_student(self):
        """删除学生信息"""
        print("\n--- 删除学生信息 ---")
        student_id = input("请输入要删除学生的学号: ")
        student_found = False
        for student in self.students:
            if student.student_id == student_id:
                self.students.remove(student)
                student_found = True
                print(f"学号为 {student_id} 的学生信息已删除。")
                break
        if not student_found:
            print("错误：未找到该学号的学生。")

    def modify_student(self):
        """修改学生信息"""
        print("\n--- 修改学生信息 ---")
        student_id = input("请输入要修改学生的学号: ")
        student_found = False
        for student in self.students:
            if student.student_id == student_id:
                print(f"当前学生信息: {student}")
                new_name = input("请输入新的学生姓名 (留空则不修改): ")
                if new_name:
                    student.name = new_name
                student_found = True
                print(f"学号为 {student_id} 的学生信息已更新。")
                break
        if not student_found:
            print("错误：未找到该学号的学生。")

    def view_all_students(self):
        """查询所有学生信息"""
        print("\n--- 所有学生信息 ---")
        if not self.students:
            print("当前系统中没有学生信息。")
            return
        for student in self.students:
            print(student)

def display_menu():
    """显示系统菜单"""
    print("\n======== 学生管理系统V10.0 ========")
    print("1. 添加学生信息")
    print("2. 删除学生信息")
    print("3. 修改学生信息")
    print("4. 查询所有学生信息")
    print("0. 退出系统")
    print("==================================")

def main():
    """主函数，运行学生管理系统"""
    manager = StudentManager()

    while True:
        display_menu()
        choice = input("请选择操作 (0-4): ")

        if choice == '1':
            manager.add_student()
        elif choice == '2':
            manager.delete_student()
        elif choice == '3':
            manager.modify_student()
        elif choice == '4':
            manager.view_all_students()
        elif choice == '0':
            print("感谢使用学生管理系统，再见！")
            break
        else:
            print("无效的选择，请重新输入。")

if __name__ == "__main__":
    main()